home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Systemmonitors / ResAnalyzer / Manuale < prev    next >
Text File  |  1996-09-26  |  16KB  |  365 lines

  1.  
  2.                                ResAnalyzer v2.2
  3.  
  4.                         © 1992 By Silvio Umberto Zanzi
  5.                             Via Agostino Gemelli 9
  6.                            40026 Imola (BO) - Italy
  7.  
  8.                           IDCMP BBS (300-14400 HST)
  9.                    Imola Direct Communication Message Port
  10.                               Tel. +39/542/25983
  11.  
  12.                           FidoNet.........2:332/405
  13.                           AmigaNet.......39:102/300
  14.                           AmigaNet.......39:102/302
  15.                           NeST...........90:8002/0
  16.                           NeST...........90:8002/100
  17.                           NeST...........90:8002/101
  18.  
  19.  
  20.  
  21. /\/\/\/\/\/\/\/\/\/\/\
  22. ...Note Di CopyRight  )
  23. \/\/\/\/\/\/\/\/\/\/\/
  24.  
  25. ResAnalyzer è un prodotto ShareWare, come tale potete usarlo, copiarlo e
  26. distribuirlo liberamente, il vostro unico obbligo e` l'invio di L. 20.000
  27. all'autore nel caso il programma vi risultasse utile.
  28. Sono estremamente graditi commenti, suggerimenti e indicazioni di eventuali
  29. bug nascosti.
  30.  
  31. L'autore non si assume responsabilità per danni diretti o indiretti causati
  32. da usi più o meno impropri di ResAnalyzer 2.2.
  33.  
  34. /\/\/\/\/\/\/\/\/\/\/\
  35. ........Introduzione  )
  36. \/\/\/\/\/\/\/\/\/\/\/
  37.  
  38. ResAnalyzer è un monitor per moduli residenti, come tale è in grado di
  39. visualizzare qualsiasi informazione relativa a questo subsistema di Amiga.
  40.  
  41. Chiunque abbia tentato di sondare il mondo dei moduli residenti e` stato
  42. finora costretto ad utilizzare le relative (incomplete) opzioni di monitor
  43. generici come Xoper, Exector, ARTM, ecc. 
  44. Con ResAnalyzer e` ora possibile avere un quadro globale dei moduli residenti
  45. e avere tutte le informazioni necessarie in modo chiaro, schematico e veloce.
  46.  
  47. ResAnalyzer è di grandissimo aiuto per chiunque sviluppi moduli residenti, con
  48. esso è più facile verificare se i propri moduli sono stati installati
  49. correttamente e se corrispondono alle dirittive impartite.
  50. Utenti non interessati alla programmazione possono verificare se quello strano
  51. modulo è il nuovo virus ancora sconosciuto a tutti i virus killer o se qualche
  52. programma ha installato "di nascosto" moduli residenti.
  53.  
  54. /\/\/\/\/\/\/\/\/\/\/\
  55. .......Installazione  )
  56. \/\/\/\/\/\/\/\/\/\/\/
  57.  
  58. ResAnalyzer non richiede particolari procedure di installazione, è sufficiente
  59. cliccare l'icona associata da WorkBench oppure digitare il nome RESANALYZER da
  60. Shell.
  61.  
  62. Utilizzando ResAnalyzer su un sistema con KickStart 1.2/1.3 si potra` notare
  63. una certa lentezza nella visualizzazione dei testi, questo problema e` dovuto
  64. alle routine di rendering dei testi della libreria graphics.
  65. Per sopperire a tale lentezza si puo` utilizzare un velocizzatore di testi
  66. come il BlitzFonts di Hayes C. Haugen oppure FF di Charlie Heath della
  67. Microsmiths.
  68. BlitzFonts lo si trova nel Fish Disk 60 o in qualsiasi BBS abbastanza fornita,
  69. FF è nel disco Workbench 1.3.
  70. Fortunatemente nel KickStart 2.04 le funzioni in rom relative alla gestione
  71. testi sono state ottimizzate, quindi le utility sopracitate diventano inutili.
  72.  
  73. ResAnalyzer riconosce se utilizzate un sistema NTSC o PAL e si comporta di
  74. conseguenza, non occupa il processo shell da cui viene lanciato, non sottrae
  75. cicli al processore se lasciato in background e si adatta automaticamente a
  76. 80 colonne se viene lanciato da un ambiente a 60.
  77.  
  78. ResAnalyzer funziona su ogni modello di Amiga uscito fino ad oggi (Marzo 1992)
  79. e su qualsiasi versione di sistema operativo uguale o superiore alla 1.2.
  80. Su sistema operativo 2.04 ResAnalyzer funzionerà correttamente e si adattera`
  81. automaticamente alle eseginze estetiche del nuovo ambiente operativo.
  82.  
  83. Ho fatto vari sforzi per rendere il programma comodo, efficiente e standard,
  84. spero di essere ripagato vedendo ResAnalyzer ben diffuso per il mondo.
  85.  
  86. /\/\/\/\/\/\/\/\/\/\/\
  87. .......Cenni Teorici  )
  88. \/\/\/\/\/\/\/\/\/\/\/
  89.  
  90. Programmare moduli residenti non è semplice, la difficoltà maggiore è reperire
  91. tutte le informazioni necessarie ed acquisire una visione globale
  92. sull'argomento.
  93. Purtroppo non è facile trovare articoli specifici nelle varie riviste
  94. tecniche, ed anche i Rom Kernel Manual 1.3 sono di scarso aiuto, le
  95. informazioni infatti sono incomplete e sparse in vari punti nei due volumi.
  96. Il miglior metodo per assimilare conoscenza in questo campo è sicuramente
  97. l'osservazione diretta ed ore di sperimentazione.
  98.  
  99. Vi sono principalmente due metodi per far eseguire automaticamente al sistema
  100. delle proprie routine subito dopo il reset:
  101.  
  102. 1) Utilizzando le variabili Capture di ExecBase
  103. 2) Utilizzando una struttura Resident
  104.  
  105. Nella tabella seguente vi è un elenco dei metodi usati da alcuni programmi.
  106.  
  107.       Nome                           Autore                      Metodo
  108.       ------------------------------------------------------------------
  109.       Guardian v1.1                  © Leonardo Fei              2
  110.       Pseudo-Ops Virus Protector     © Pseudo-Ops                2
  111.       Virus Slayer                   © The Band                  1
  112.       Protec III                     © Bowie Softworks           2
  113.       Aspro                          © Dr Debug                  1,2
  114.       Rom Crack                      © SCA                       1
  115.       RAD v1.0                       © Commodore-Amiga           2
  116.       RRAM Disk                      © B. Dayley & Other Guys    2
  117.       Privilege Handler              © John Veldthuis            2
  118.       SCA virus                                                  1
  119.       Byte Bandit virus                                          1
  120.       EDV (BGS9) virus                                           2
  121.       HCS II virus                                               1
  122.       Pentagon Circle virus                                      1
  123.       16 Bit Crew virus                                          1
  124.       BackFlash virus                                            1
  125.       WarHawk virus                                              1
  126.       NorthStar 1 (anti)virus                                    1
  127.       NorthStar 2 (anti)virus                                    1
  128.       Phantasmumble virus                                        1
  129.       Graffiti virus                                             1
  130.       UltraFox virus                                             1
  131.  
  132. Questi due metodi sono spiegati nella prossima sezione, nelle voci relative
  133. alle opzioni di ResAnalyzer.
  134.  
  135. /\/\/\/\/\/\/\/\/\/\/\
  136. .............Opzioni  )
  137. \/\/\/\/\/\/\/\/\/\/\/
  138.  
  139. Le funzioni di ResAnalyzer sono attivabili tramite un click del mouse sopra
  140. i rispettivi gadget oppure dai tasti funzione da F1 a F6.
  141. Premendo in qualsiasi momento il tasto F10 si attiva l'iconifica.
  142. Per uscire oltre all'apposito gadget si può utilizzare il tasto ESC.
  143.  
  144. Captures
  145. ========
  146. I captures sono tre variabili presenti nella struttura ExecBase, definite
  147. come:
  148.  
  149. SysBase->ColdCapture
  150. SysBase->CoolCapture
  151. SysBase->WarmCapture
  152.  
  153. Queste tre variabili vengono automaticamente scandite dal computer durante
  154. le operazioni di startup, l'ordine di scansione corrisponde all'elenco.
  155. Se una di queste variabili contiene un valore diverso da zero, verrano
  156. momentaneamente sospese le operazioni di startup e verra` eseguita la routine
  157. puntata dalla variabile stessa.
  158. Ultimata la routine utente, verrano proseguite le normali operazioni di
  159. startup.
  160. I puntatori presenti in CoolCapture e WarmCapture vengono preservati anche
  161. dopo vari reset, ColdCapture viene invece azzerato ogni volta.
  162.  
  163. L'opzione CAPTURES di ResAnalyzer mostra eventuali puntatori e permette
  164. eventualmente di azzerarli.
  165.  
  166.  
  167. KickMemPtr
  168. ==========
  169. Questa variabile, definita come SysBase->KickMemPtr, contiene il puntatore
  170. alla struttura MemList del primo modulo residente presente in RAM.
  171. Nella struttura MemList è contenuta una struttura MemEntry, tramite
  172. quest'ultima è possibile avere informazioni utili sulle specifiche di memoria
  173. del blocco residente ed un puntatore ad una struttura Resident.
  174. La struttura MenList contiene anche una struttura Node dalla quale si può
  175. determinare se vi sono altre strutture MemList concatenate.
  176. Il sistema utilizza questa lista per capire quali blocchi di memoria deve
  177. proteggere, rendendo impossibile ad un generico programma di occupare la
  178. memoria che avete riservato al modulo residente.
  179. La lista viene mantenuta anche dopo il reset.
  180.  
  181. L'opzione KICKMEMPTR di ResAnalyzer fornisce alcune utili informazioni quali
  182. locazione iniziale e finale del codice eseguibile del modulo e sua lunghezza
  183. in byte.
  184.  
  185.  
  186. KickTagPtr
  187. ==========
  188. Questa variabile, definita come SysBase->KickTagPtr, contiene una catena di
  189. array.
  190.  
  191. Ogni volta che viene inserito un nuovo modulo residente nel sistema, viene
  192. aggiunto un nuovo puntatore in coda all'array puntato da KickTagPtr.
  193. Per ottenere il prossimo elemento della catena, si deve considerare il valore
  194. puntato dall'ultimo puntatore, determinare se e` settato il bit 31, e in tal
  195. caso resettarlo.
  196. Il valore risultante è il puntatore del prossimo elemento.
  197. Questa catena indica al sistema quali sono i moduli che l'utente ha installato
  198. in memoria, ed è probabilmente usato dal sistema per il lancio dei moduli
  199. stessi.
  200.  
  201. Resanalyzer mostra tutti i moduli presenti nella catena ed indica la locazione
  202. di KickTagPtr.
  203.  
  204.  
  205. KickChkSum
  206. ==========
  207. Questa variabile, definita come SysBase->KickCheckSum, serve al sistema per
  208. verificare, al momento del reset, se tutti i codici relativi ai moduli
  209. residenti sono integri.
  210. Questo controllo viene eseguito effettuando il checksun delle strutture
  211. Resident e del codice associato confrontandolo con il valore indicato in
  212. SysBase->KickCheckSum.
  213. Se i valori non coincidono, il sistema ignora i moduli installati, questi
  214. infatti potrebbero essere stati danneggiati dal cattivo funzionamento di un
  215. qualche programma.
  216. E` fondamentale aggiornare questa variabile tramite SumKickData() ogni volta
  217. che si installa un nuovo modulo.
  218.  
  219. ResAnalyzer permette di azzerare SysBase->KickCheckSum, in questo modo
  220. disattivate tutti i moduli, è curioso notare che alcuni moduli possono essere
  221. riattivati senza nessun danno anche dopo vari reset!
  222. ResAnalyzer controlla anche che la funzione SumKickData() non sia stata
  223. patchata da altri programmi, in tale evenienza l'utilizzo di questa funzione
  224. sarebbe inaffidabile (basti considerare i virus che modificano SumKickData()).
  225.  
  226.  
  227. ResModules
  228. ==========
  229. Questa opzione visualizza tutti gli elementi dell'array di moduli residenti
  230. presenti in SysBase->ResModules.
  231. Ogni elemento è un puntatore a una struttura Resident.
  232.  
  233. struct Resident
  234.        {
  235.         UWORD rt_MatchWord;
  236.         struct Resident *rt_MatchTag;
  237.         APTR  rt_EndSkip;
  238.         UBYTE rt_Flags;
  239.         UBYTE rt_Version;
  240.         UBYTE rt_Type;
  241.         BYTE  rt_Pri;
  242.         char  *rt_Name;
  243.         char  *rt_IdString;
  244.         APTR  rt_Init;
  245.        };
  246.  
  247. ResAnalyzer mostra tutti i moduli presenti, sia quelli utente indicati come
  248. moduli RAM, ed evidenziati dal simbolo "»»", che quelli presenti in ROM,
  249. visualizzando tutti i parametri di maggiore significato delle relative
  250. struttura Resident.
  251. Normalmente nella versione 1.2 sono presenti 23 moduli, mentre nella 1.3 c'è
  252. un modulo in più, la libreria privata romboot.
  253. rt_InitCode è un puntatore all'inizio del codice del modulo, rt_Pri serve per
  254. ordinare l'array in ordine decrescente, infatti al momento del reset verranno
  255. eseguiti per primi i moduli a maggiore priorità, e via via quelli a minore.
  256. Il rt_Type descrive il tipo di modulo, i tipi sono molteplici: libreria,
  257. device, risorsa, task, unknown (modulo non classificabile), ecc.
  258. L'rt_IdString è un messaggio scritto dal programmatore all'interno del proprio
  259. modulo, solitamente la data di creazione e versione.
  260. Il rt_Flags descrive le modalità del ResModule, i tipi possono essere quattro:
  261.  
  262.                 Flag                   Introdotti nel KickStart
  263.                 ------------------------------------------------
  264.                 RTF_AUTOINIT           1.2
  265.                 RTF_COLDSTART          1.2
  266.                 RTF_AFTERDOS           2.0
  267.                 RTF_SINGLETASK         2.0
  268.  
  269. I flag introdotti nella versione 1.2 hanno un grande significato per quanto
  270. riguarda l'inizializzazione del modulo.
  271. Questo complicato processo, molto in breve, funziona in questo modo:  quando
  272. exec incontra il flag RTF_COLDSTART, chiama la funzione InitCode(), tale
  273. funzione a sua volta chiama InitResident().
  274. Se non e` impostato il flag RTF_AUTOINIT, InitResident() chiama il codice
  275. puntato dal campo rt_Init, altrimenti chiama la funzione MakeLibrary().
  276. In questo caso nella locazione puntata da rt_Init non vi sara` del codice
  277. eseguibile, ma dati che MakeLibrary() utilizzera` per creare una libreria,
  278. un device o una risorsa.
  279. Il sistema scandisce il campo rt_Flags per sapere se deve chiamare
  280. AddLibrary(), AddDevice() o AddResource().
  281. Sul significato dei nuovi flag 2.0 non si conosce molto, a parte il fatto che
  282. i moduli con flag RTF_AFTERDOS hanno sempre priorità inferiore a -100, mentre
  283. il flag RTF_SINGLETASK sta a indicare moduli in cui SysBase->ThisTask=0.
  284. I moduli residenti aggiunti al sistema verrano inseriti nell'array di
  285. ResModules solo al successivo reset.
  286.  
  287. Per passare da una pagina all'altra all'interno della funzione ResModules di
  288. ResAnalyzer si devono usare i tasti cursore.
  289. Premendo il tasto P, ResAnalyzer dirottera` su PRT: tutta la lista dei
  290. ResModules, i puntatori dei Capture, di kickTagPtr e di KickMemPtr.
  291.  
  292. Information
  293. ===========
  294. Questa opzione mostra alcuni ringraziamenti personali più alcune interessanti
  295. informazioni sul sistema.
  296. Viene indicato la versione di KickStart, la configurazione del processore, la
  297. frequenza di vertical blank e di alimentazione rete (NTSC 60Hz, PAL 50Hz) e se
  298. è presente l'ECS.
  299.  
  300. /\/\/\/\/\/\/\/\/\/\/\
  301. .......Compatibilità  )
  302. \/\/\/\/\/\/\/\/\/\/\/
  303.  
  304. ResAnalyzer è stato testato con successo su:
  305.  
  306. - Amiga  500 normale
  307. - Amiga  500 1 Mega Chip
  308. - Amiga 1000 768K
  309. - Amiga 2000 normale
  310. - Amiga 2000 68030+68881
  311. - Amiga 3000 25-100
  312.  
  313. - KickStart: 1.2 - 1.3 - 2.0ß - 2.04
  314. - Processori: 68000 - 68010 - 68030 - [68881 - 68882]
  315.  
  316. /\/\/\/\/\/\/\/\/\/\/\
  317. ......Considerazioni  )
  318. \/\/\/\/\/\/\/\/\/\/\/
  319.  
  320. Tutte le informazioni esposte in questo manuale e codificate in ResAnalyzer
  321. sono frutto di svariate ore di lavoro in un campo dove praticamente non esiste
  322. documentazione.
  323. Se trovate che qualcosa scritto qui o codificato in ResAnalyzer è scorretto,
  324. per favore avvertimi attraverso ogni mezzo (l'ideale sarebbe l'indirizzo
  325. FidoNet 2:332/405 di cui sono SysOp), è mia intenzione migliorare e correggere
  326. ResAnalyzer.
  327.  
  328. Per concludere vorrei ringraziare queste persone, i cui consigli, stimoli e
  329. suggerimenti hanno avuto una grande influenza nello sviluppo di ResAnalyzer:
  330.  
  331. - Giorgio Terzi................per avermi insegnato il C su Amiga
  332. - Nic Wilson...................per la routine di rilevazione ECS
  333. - Marco Mariani................per i numerosi suggerimenti e aiuti
  334. - GianMario Sartini............per avermi prestato il suo A590+
  335. - Luigi Mongardi...............per avermi spiegato alcune cose sull'uso
  336.                                della stampante
  337. - Luigi Callegari..............per aver pubblicato ResAnalyzer su EnigmA Disk
  338. - Luca Spada...................per aver creato la rete telematica mondiale SAN,
  339.                                principale vettore di diffusione di ResAnalyzer
  340. - Michele Masiero..............per aver hatchato ResAnalyzer nella rete
  341.                                telematica mondiale ADS
  342. - Romano Tenca.................per alcune preziose informazioni tecniche
  343. - Giammarco Giovannelli........per aver detto che ResAnalyzer è bello!
  344. - Mario Mure'..................per il beta testing della routine di rilevazione
  345.                                ECS
  346. - Barbara, Ylenia & Daniela....per il semplice fatto di esistere.
  347. - L'area AMY_DEV.ITA di Fido...per la possibilita` di acquisire nuove
  348.                                informazioni e conoscere altri programmatori
  349.  
  350. Ringrazio anche le seguenti persone, grazie alle quali ho potuto diventare
  351. SysOp di un nodo FidoNet.
  352.  
  353. - Giuseppe Selvatici
  354. - Marco Baldini
  355. - Paolo Marchi
  356. - Marcello Ardini
  357. - Mario Battacchi
  358. - Andrea Mennini
  359. - Antonio Pasini
  360.  
  361. Un ringraziamento particolare a Karl H. Riesen, la prima (e tutt'ora unica)
  362. persona che si è registrata a ResAnalyzer.
  363. Non ci sarebbe stata questa versione senza il suo appoggio morale, grazie
  364. Karl!
  365.